home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / machserver / 1.098 / include / ndbm.h < prev    next >
C/C++ Source or Header  |  1989-06-23  |  2KB  |  68 lines

  1. /*
  2.  * Copyright (c) 1983 Regents of the University of California.
  3.  * All rights reserved.  The Berkeley software License Agreement
  4.  * specifies the terms and conditions for redistribution.
  5.  *
  6.  *    @(#)ndbm.h    5.1 (Berkeley) 5/30/85
  7.  */
  8.  
  9. #ifndef _NDBM
  10. #define _NDBM
  11.  
  12. /*
  13.  * Hashed key data base library.
  14.  */
  15. #define PBLKSIZ 1024
  16. #define DBLKSIZ 4096
  17.  
  18. typedef struct {
  19.     int    dbm_dirf;        /* open directory file */
  20.     int    dbm_pagf;        /* open page file */
  21.     int    dbm_flags;        /* flags, see below */
  22.     long    dbm_maxbno;        /* last ``bit'' in dir file */
  23.     long    dbm_bitno;        /* current bit number */
  24.     long    dbm_hmask;        /* hash mask */
  25.     long    dbm_blkptr;        /* current block for dbm_nextkey */
  26.     int    dbm_keyptr;        /* current key for dbm_nextkey */
  27.     long    dbm_blkno;        /* current page to read/write */
  28.     long    dbm_pagbno;        /* current page in pagbuf */
  29.     char    dbm_pagbuf[PBLKSIZ];    /* page file block buffer */
  30.     long    dbm_dirbno;        /* current block in dirbuf */
  31.     char    dbm_dirbuf[DBLKSIZ];    /* directory file block buffer */
  32. } DBM;
  33.  
  34. #define _DBM_RDONLY    0x1    /* data base open read-only */
  35. #define _DBM_IOERR    0x2    /* data base I/O error */
  36.  
  37. #define dbm_rdonly(db)    ((db)->dbm_flags & _DBM_RDONLY)
  38.  
  39. #define dbm_error(db)    ((db)->dbm_flags & _DBM_IOERR)
  40.     /* use this one at your own risk! */
  41. #define dbm_clearerr(db)    ((db)->dbm_flags &= ~_DBM_IOERR)
  42.  
  43. /* for flock(2) and fstat(2) */
  44. #define dbm_dirfno(db)    ((db)->dbm_dirf)
  45. #define dbm_pagfno(db)    ((db)->dbm_pagf)
  46.  
  47. typedef struct {
  48.     char    *dptr;
  49.     int    dsize;
  50. } datum;
  51.  
  52. /*
  53.  * flags to dbm_store()
  54.  */
  55. #define DBM_INSERT    0
  56. #define DBM_REPLACE    1
  57.  
  58. DBM    *dbm_open();
  59. void    dbm_close();
  60. datum    dbm_fetch();
  61. datum    dbm_firstkey();
  62. datum    dbm_nextkey();
  63. long    dbm_forder();
  64. int    dbm_delete();
  65. int    dbm_store();
  66.  
  67. #endif /* _NDBM */
  68.